Content providers are experiencing a growth in demand for interactive applications, such as interactive menus, games, web browsing, and the like. Each such interactive application must provide an output that is tailored to the individual requesting it. This is done by establishing a session between the content provider and a client device over a data network, for example the Internet or a cable television system. Furthermore, the audiovisual data for each application is typically encoded or compressed according to an encoding scheme, such as MPEG, to reduce the amount of data that must be transferred. However, encoding audiovisual data for transmission over such a data network is computationally expensive. As the number of requests for interactive sessions grows, it becomes problematic to both render and encode the output of a large number of application sessions, each output destined for a different viewer.
It is known in the art to reuse audiovisual content by caching it. In this way, a frame of video content may be produced once, and sent to as many client devices as required. However, many applications generate reusable images that are smaller than a full frame of video. For example, a menuing application may generate a pulsating menu button animation, or a video game may draw a spaceship image at nearly any location on the screen. Prior art systems must re-render and re-encode these sub-frame images for each video frame produced. Caching mechanisms cannot be used, because the encoding process often uses a state-based data compression system that does not permit insertion of images into an existing data stream. As rendering and encoding are computationally expensive operations, prior art systems require a large hardware and software investment to keep up with demand.